package com.jinke.api.modules.third.sjgj.model.request;

import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * 请求参数类
 */

@Data
public class CreateOrderRequest extends BaseEntity{

    // 系统获取的运输运输服务ID
    private int qd_id;
    // 订单信息
    private List<Orders> orders;

    // Getter and Setter methods

    /**
     * 订单信息类
     */
    @Data
    public static class Orders {
        // 固定值：2
        private int cargo_type;
        // 客户订单号
        private String OrderID;
        // 特殊用途，一般不使用，如需要使用请与技术人员确认
        private String ydh1;
        // 特殊用途，一般不使用，如需要使用请与技术人员确认
        private String ydh2;
        // 发件人姓名
        private String Fname;
        // 发件人公司，如不传默认使用发件人姓名
        private String Fcompany;
        // 发件人电话
        private String Ftel;
        // 发件地址一
        private String Fadd1;
        // 发件省/州
        private String Fstate;
        // 发件城市
        private String Fcity;
        // 发件邮编
        private String Fpostcode;
        // 发件国家
        private String Fcountry;
        // 用于特殊运输服务需要使用接口地址ID的
        private int Otheraddid;
        // 收件人姓名
        private String Sname;
        // 收件人公司
        private String Scompany;
        // 收件人地址
        private String Sadd1;
        // 收件人地址
        private String Sadd2;
        // 收件人城市
        private String Scity;
        // 收件人省/州
        private String Sstate;
        // 收件人邮编
        private String Spostcode;
        // 收件人电话
        private String Stel;
        // 收件人国家
        private String Scountry;
        // 仓库ID，用于仓库库存发货，系统内获取
        private int ckid;
        // 包裹数量
        private int Parcel_num;
        // 总重量(kg) 如一票多箱的情况下，这里是所有箱子加起来的总重量
        private BigDecimal Weight;
        // 订单备注，显示在label上面
        private String Note;
        // 用于非库存发货
        private List<Parcels> parcels;

        // Getter and Setter methods
    }

    /**
     * 包裹信息类 用于非库存发货
     */
    @Data
    public static class Parcels {
        // 箱子编号，不同的箱子编号表示不同的箱子
        private String box;
        // 多用于一票多件，每个面单上面的备注，显示在每张Label上面
        private String boxnote;
        // 包裹重量(kg) 特别注意：此重量为包裹重量，而非产品重量
        private BigDecimal weight;
        // 长(cm)
        private BigDecimal length;
        // 宽(cm)
        private BigDecimal width;
        // 高(cm)
        private BigDecimal height;
        // sku
        private String sku;
        // 中文名称
        private String cnname;
        // 英文名称
        private String enname;
        // 申报单价
        private float price;
        // 申报数量
        private int num;
        // 材质
        private String material;
        // 用途
        private String use;
        // 产品单重
        private float cweight;
        // 海关编码
        private String hscode;
        // 电池描述
        private String battery;

        // Getter and Setter methods
    }
}
